package lee.study.TheGeneric;

import java.util.ArrayList;
import java.util.Stack;

/**
 * 通配符:  ?  也是一种泛型
 * 通配符一般用于读取 add(?)
 * 泛型一般用于写入 add(T)
 * <p>
 * 通配符既有上界(extends)  <? extends 上界>
 * 也有下界(super)      <? super E>  ?表示的是E的父类
 */

//写一个通用的方法，打印集合当中的所有元素
class GeneriList {
    public static <T> void printList(ArrayList<T> list) {//使用泛型
        for (T val : list) {
            System.out.print(val + " ");
        }
        System.out.println();
    }

    public static void printList2(ArrayList<?> list) {//使用通配符
        for (Object val : list) {
            System.out.print(val + " ");
        }
        System.out.println();
    }
}

public class TestDemo {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        GeneriList.printList(list);

    Stack<Integer> stack=new Stack<>();
    }
}
